Design by Constraint